Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Describe the rollup process #87

Closed
wants to merge 1 commit into from

Conversation

aidanhs
Copy link
Member

@aidanhs aidanhs commented Aug 18, 2017

Copy link
Member

@frewsxcv frewsxcv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm, nice work!


Enter rollups - low risk changes (often doc fixes or other non-functional changes)
are marked with the `rollup` command to bors (e.g. `@bors r+ rollup` to approve a
PR and mark as a rollup or `@bors rollup` to mark a previously approved PR).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if you want to mention rollup- which removed the rollup flag

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Copy link
Member

@Mark-Simulacrum Mark-Simulacrum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing this! I'm not sure I like the general thought process here that rollup creation is based on other prs in queue, since avoiding such manual management seems to be the reason for priorities. Open to hearing your thoughts though, of course.


The Rust project has a policy that every PR must be tested after merge before it can
be pushed to master. As PR volume increases this can scale poorly, especially given
the 2hr30min current CI duration for Rust.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"long" seems better as this is constantly changing.

- Visit https://buildbot2.rust-lang.org/homu/queue/rust.
- If there are >= 10 rollup priority PRs, you should probably create a rollup.
- Look at the current PR being tested:
- If it has a priority >0, do not create a rollup until it's complete.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels like it should be based on the approved queue.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So ">= 10 rollup priority PRs" -> ">= 10 approved rollup priority PRs"? That is what I meant to say, but want to check you're not looking for something else.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, that too, but what I meant is that instead of "current PR being tested" we should base this off of the whole queue, I think, or at least the PR being tested and the next PR in the queue.

- (first time: Authorise the github permissions)
- Wait for a minute while the rollup is created on the `rollup` branch of your repo
and the PR is submitted for you.
- Comment with `@bors r+ p=1`. This will put the PR above any 'normal' PRs, but
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I tend to use p=10 for rollups, 1 for things that we want to land soon, and 100 for PRs that need to land next. Open to changing this, though, it's not really based on logical thought, just what I've arrived at over time.

below 'urgent' PRs.
- Comment on the PR currently being tested with `@bors retry`. This will prompt
bors to stop the current test, allowing it to pick up the new top of the queue -
the rollup.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? Rollups should never be urgent...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this isn't written well. When I say "This will put the PR above any 'normal' PRs, but below 'urgent' PRs." I mean "r+ with p=1 (or 10) will put the rollup PR above any 'normal' PRs with just an r+, but below urgent PRs, e.g. with p=100, that need to land asap".

How would you rephrase this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that line is fine. I was confused why we would @bors retry a PR already being tested to prioritize a rollup; that doesn't seem advantageous to me.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, just to avoid merge conflicts when it's the rollup's turn (bors is sometimes overcautious with merging). Indeed, they're not important hence why I say something like "don't cancel a PR that's been running for a while".

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah. I've rarely seen merge conflicts in a rollup, I think, but I'm not sure this is worth noting here -- to me, if we have to re-rollup that's not really all that bad.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be honest I had just seen it somewhere else and decided to include it here e.g. rust-lang/rust#42592 (comment), rust-lang/rust#41279 (comment), rust-lang/rust#41311 (comment)

Any thoughts on this @frewsxcv?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a subjective call. For the most part, I usually don't interrupt the current PR being tested unless that PR is included in the rollup or the rollup hit a spurious failure and needs an immediate retry

Close the PR, figure out if the failure was spurious - if so, create a new PR,
if not, find the possible candidate PR(s) and unmark it (them) as rollups with
`@bors rollup-`, commenting on the PR with the error. Hopefully the author or
a reviewer will give feedback to get the PR fixed or confirm that it's not at
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r- seems prudent as well.

@aidanhs
Copy link
Member Author

aidanhs commented Sep 6, 2017

Updated based on comments. Rollups are now left to naturally reach the top of the queue, and the only factor in creating a rollup is the number of rollup PRs ready to go.

Copy link
Member

@Mark-Simulacrum Mark-Simulacrum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than that one suggestion, I like this proposal much better. Thanks for writing it up!


## Failed rollup

Close the PR, figure out if the failure was spurious. If so, create a new PR,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the failure is spurious, @bors retry seems appropriate; not closing the PR.

Copy link
Member Author

@aidanhs aidanhs Sep 7, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are a bunch of different possible approaches, and I don't mind which. Which of the following do you prefer?

  1. always a new rollup
  2. retry on spurious failure
  3. retry on spurious failure, unless there have been additional rollup-approved PRs created
  4. retry on spurious failure, also retry the current PR running if it's p<10 and has been running <N minutes
  5. 3 + 4
  6. [insert other here]

@XAMPPRocky
Copy link
Member

@aidanhs Hello, unfortunately the project layout has changed such that we can no longer merge this PR in current state. If you have the time would you be able to update this or make a new PR?

@XAMPPRocky XAMPPRocky mentioned this pull request Oct 20, 2019
@XAMPPRocky
Copy link
Member

Closing this in favor of #268

@XAMPPRocky XAMPPRocky closed this Oct 21, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants